package com.tesisutn.restsoft.dominio.usuario;

import java.util.Hashtable;
import java.util.Map;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

import com.tesisutn.restsoft.dominio.interfaces.ObjetoDeDominio;

//@Entity
public class TipoUsuario implements ObjetoDeDominio{
    private Long id;
    private String nombre;
    private Map<Vista, Permiso> permisosXVista;

    public TipoUsuario(){
        permisosXVista = new Hashtable<Vista, Permiso>();
    }
    
    @Id
    @GeneratedValue
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    
    public Map<Vista, Permiso> getPermisosXVista() {
        return permisosXVista;
    }

    public void setPermisosXVista(Map<Vista, Permiso> permisosXVista) {
        this.permisosXVista = permisosXVista;
    }

    public void addVista(Vista vista, Permiso permiso){
        permisosXVista.put(vista, permiso);
    }

    public Permiso getPermiso(Vista vista) throws VistaNoDisponibleException{
        if(permisosXVista.get(vista) == null)
            throw new VistaNoDisponibleException("La vista " + vista + " no se encuentra en la colección");
        return permisosXVista.get(vista);
    }

    @Override
    public String toString() {
        return nombre;
    }
}
